package com.hxexp.weixin.mvc.login.service;

import javax.servlet.http.HttpServletResponse;

import com.hxexp.weixin.common.exception.ServiceException;
import com.hxexp.weixin.hpe.api.login.model.LoginResultBean;

/**
 * 登录服务
 * @author li.jiang
 *
 */
public interface LoginService {
    /**
     * 用户名密码登录
     * @param username 用户名
     * @param password 密码
     * @return 登录结果
     */
    public LoginResultBean loginByUsername(String username, String password) throws ServiceException;

    /**
     * 使用openid登录
     *
     * @param openid
     *            微信用户唯一标示
     * @return 登录结果
     */
    public LoginResultBean loginByOpenId(String openid) throws ServiceException;

    /**
     * 记住登录用户信息
     *
     * <br/>
     * <br/>
     * 在服务器保存登录用户信息到缓存，并将标示登录用户的token值写入到cookie
     *
     * @param userLoginInfo
     *            登录用户信息
     * @param response
     *            http响应
     */
    public String rememberLoginUser(LoginResultBean userLoginInfo, HttpServletResponse response);

    /**
     * 为HPE用户绑定微信openid
     *
     * @param userLoginInfo
     *            登录用户信息
     * @param openid
     *            从cookie获取的openid
     * @throws ServiceException
     */
    public void addOpenIdBind(LoginResultBean userLoginInfo, String openid) throws ServiceException;
}
